package app.autolist;
import androidx.annotation.StringDef;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//import java.util.spi.CalendarDataProvider;
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;

//static String src0="5月18日，我们有一个会议，请大家在下午5:45，准时到达主楼B22，欢迎大家参加！";
//static String src1="英才学院“紫丁香拔尖创新人才培养计划”高端平台参访第6期——走进紫丁香微纳卫星创新工场\n题目：走进紫丁香微纳卫星创新工场\n时间：2021年5月9日（周日）13：30\n地点：紫丁香微纳卫星创新工场\n\n";

public class getDate{
    public String src;

    //定义信息类
    public class schedule{
        class time{
            String o_date;
            String o_time;
            String o_AOrP;
            String o_year;
            int h;
            int m;
            int M;
            int d;
            int y;
            Date date0;

            void transDate(){
                Calendar datenow = Calendar.getInstance();
                String string = o_date;
                String format = "M月d日"+String.valueOf(datenow.YEAR + 1900);
                SimpleDateFormat dateFormat = new SimpleDateFormat(format);
                try {
                    date0 = dateFormat.parse(string);
                }
                catch(Exception e){
                };
            }
            void transTime(){

            }
        }
        time s = new time();//开始时间
        time e = new time();//结束时间
        String addr;//address 地点
        String name;//事件名称
    }
    schedule item = new schedule();

    public void process(String src_i){
        src=src_i;
        //定义正则串    p->pattern
        String p_time[],p_date[],p_addr[],p_AOrP[];
        p_time=new String[10];
        p_date=new String[10];
        p_addr=new String[10];
        p_AOrP=new String[10];

        p_AOrP[0] = "(早上?|上午|中午|下午|晚上?)";
        p_time[0] = "(\\d{1,2}[:：]\\d{2})";
        p_time[1] = "([一,二,三,四,五,六,七,八,九,十]|十一|十二|(\\d{1,2}))点(半|整)?";
        p_date[2] = "((1(0|1|2)?|[2-9])月\\d\\d?日)";
        p_date[1] = "(今天|明天|后天)";
        p_date[0] = "(下|本)?(周|星期)[一二三四五六日]";
        p_addr[0] = "(?<=(地址|地点|到达)：)(.*)(?=[,.，。\\ \\n])";
        p_addr[1] = "(?<=在)(.*?)(?=举行)";
        p_addr[2] = "(主楼|文体中心|.公寓|正心楼)";
        p_addr[3] = "(?<=(到))(.*)(?=[（(])";

        int flag=0,i=0;

        while(i<=9&&p_time[i]!=null){//遍历所有时间正则句
            Pattern P_time = Pattern.compile(p_time[i]);
            Matcher m_time = P_time.matcher(src);
            i++;
            flag=0;
            while(m_time.find()){//查找时间
                if(flag==0){
                    item.s.o_time=m_time.group();
                }
                if(flag==1){
                    item.e.o_time=m_time.group();
                }
                flag++;
            }
        }
        i=0;
        while(i<=9&&p_date[i]!=null){//遍历所有日期正则句
            Pattern P_date = Pattern.compile(p_date[i]);
            Matcher m_date = P_date.matcher(src);
            i++;
            flag=0;
            while(m_date.find()){//查找日期
                if(flag==0){
                    item.s.o_date=m_date.group();
                }
                if(flag==1){
                    item.e.o_date=m_date.group();
                }
                flag++;
            }
        }
        i=0;
        while(i<=9&&p_AOrP[i]!=null){//遍历所有上下午正则句
            Pattern P_AOrP = Pattern.compile(p_AOrP[i]);
            Matcher m_AOrP = P_AOrP.matcher(src);
            i++;
            flag=0;
            while(m_AOrP.find()){//查找上下午
                if(flag==0){
                    item.s.o_AOrP=m_AOrP.group();
                }
                if(flag==1){
                    item.e.o_AOrP=m_AOrP.group();
                }
                flag++;
            }
        }
        i=0;
        while(i<=9&&p_addr[i]!=null){//遍历所有地点正则句
            Pattern P_addr = Pattern.compile(p_addr[i]);
            Matcher m_addr = P_addr.matcher(src);
            i++;
            flag=0;
            while(m_addr.find()){//查找地点
                if(flag==0){
                    item.addr=m_addr.group();
                }
                if(flag==1){
                    item.addr=m_addr.group();
                }
                flag++;
            }
        }
    }
    public void input(String src_i){
        String src="";
        src = src_i;
        process(src_i);
    }
    public String output(){
        String out = "日期：" + item.s.o_date + "\n时间：" + item.s.o_time +"\n地点：" + item.addr;
        return out;
    }
    public void main(String[] args){
        String src1="英才学院“紫丁香拔尖创新人才培养计划”高端平台参访第6期——走进紫丁香微纳卫星创新工场\n题目：走进紫丁香微纳卫星创新工场\n时间：2021年5月9日（周日）13：30\n地点：紫丁香微纳卫星创新工场\n\n";
        input(src1);
        System.out.println(output());
        /*item.s.transDate();
        item.s.transTime();
        System.out.println();
        System.out.println("输入内容\n"+src);
        System.out.println("时间\t:"+item.s.h+':'+item.s.m);
        System.out.println("日期\t:"+item.s.M+'\\'+item.s.d);
        System.out.println("地点\t:"+item.addr);

        System.out.println("输入内容\n"+src);
        System.out.println("开始时间\t:"+item.s.o_time);
        System.out.println("开始日期\t:"+item.s.o_date);
        System.out.println("开始日期1\t:"+item.s.date0);
        System.out.println("上下午  \t:"+item.s.o_AOrP);
        System.out.println("结束时间\t:"+item.e.o_time);
        System.out.println("结束日期\t:"+item.e.o_date);
        System.out.println("上下午  \t:"+item.e.o_AOrP);
        System.out.println("地点    \t:"+item.addr);*/
    }
}